const { autoUpdater } = require('electron-updater');
const {dialog} = require('electron')
var mainWin = null;
export const checkUpdate = (win, ipcMain) => {
  autoUpdater.autoInstallOnAppQuit = true; // 应用退出后自动安装
  mainWin = win;

  // autoUpdater.checkForUpdatesAndNotify();
  //校验地址
  autoUpdater.setFeedURL({ provider: "generic",url: process.env.VUE_APP_UPDATE_URL });
  autoUpdater.autoDownload = true; // 自动下载
  autoUpdater.checkForUpdates();
  
  // 检测是否有更新包并通知
  autoUpdater.on('error', (error) => {
    // 下载完成后强制用户安装，不推荐
    // autoUpdater.quitAndInstall();
  });
   //监听开始检测更新事件
   autoUpdater.on('checking-for-update', function (message) {
    console.info('检测更新')
    dialog.showMessageBox(mainWin, {
      type: 'info',
      buttons: ['OK'],
      title: '检测更新...',
      message: '检测更新'
  });
});
//监听发现可用更新事件
autoUpdater.on('update-available', function (message) {
    console.info('有可用更新')
    dialog.showMessageBox(mainWin, {
        type: 'info',
        buttons: ['OK'],
        title: '下载更新中，请等待...',
        message: '下载完成后会自动安装'
    });
});
//监听没有可用更新事件
autoUpdater.on('update-not-available', function (message) {
//   dialog.showMessageBox(mainWin, {
//     type: 'info',
//     buttons: ['OK'],
//     title: '没有更新...',
//     message: '没有更新'
// });
 
});
  autoUpdater.on('download-progress', (prog) => {
  //通过preload.js进行通信，来显示进度条
    mainWin.webContents.send('update', {
      speed: Math.ceil(prog.bytesPerSecond / 1000), // 网速
      percent: Math.ceil(prog.percent), // 百分比
    });
  });
  autoUpdater.on('update-downloaded', (info) => {
    dialog.showMessageBox(mainWin, {
      type: 'info',
      buttons: ['OK'],
      title: '下载完成',
      message: '下载完成'
  });
    mainWin.webContents.send('downloaded');
    // 下载完成后强制用户安装，不推荐
    autoUpdater.quitAndInstall();
  });
  // 监听渲染进程的 install 事件，触发退出应用并安装
  ipcMain.handle('install', () => autoUpdater.quitAndInstall());
  console.log('checkupdate end')

};

// module.exports = checkUpdate;
